Authentication Vulnerability

Authentication Nedir?

Web sitelerinin kullanıcıların giriş yapılabilmesi için uyguladıkları bir takım doğrulamalar olarak tanımlanabilir. Yani kullanıcının, kullanıcı adı- şifre, sms, mail, biyometrik veriler, 3.taraf doğrulamalar( Google authentication) gibi doğrulamaların, doğru girilmesi sonucunda, verdiği bilgilerin veri tabanında karşılaştırılması ve doğruysa   hesabına erişim sağlamasına authentication (doğrulama) denir.

Genel olarak bakacaksak ikiye ayrılır diyebiliriz:

 

 

Authentication Vulnerbility Nedir Nasıl Test Edilir?

Saldırganın çeşitli doğrulama faktörlerini çeşitli saldırı ve metodlar ile kendisine ait olmayan hesaba giriş yapabilmesine authentication açığı denir. Bu zafiyetten etkilenmek sadece geliştiricilerin suçu değildir kullanıcıların da saldırılara karşı zor parolalar ve doğrulama unsurlarını da koruması gerekir. Bu zafiyet nasıl test edilir kısaca anlatalım eğer bir web sitesi şifre denemelerine belirli bir sınırlama getirmiyorsa örneğin saldırganın saldırı şifreleri listesinde qwertyx123 şifresi 1000000 sırada diyelim, eğer web sitesinde şifre denemelerine  karşı belli bir sınır getirmezse brute force(kaba kuvvet) saldırısı ile bu şifre kırılacaktır. Ve saldırgan ilk doğrulama aşamasını geçebilecektir. Bunun dışında güçlü doğrulama seçenekleri de amacına uygun olmalıdır. Bazı web siteleri 3 ya da 4 rakam  ile 2FA doğrulaması gerçekleştiriyor ve deneme sınırlandırılması da olmadığını düşünürsek bu doğrulamanın yarım saatte bypass edilmesi mümkün hale geliyor.

Bunun dışında doğrulamaların düzgün yapılandırılmaması brute force atakları uygulanmadan kolay bir şekilde atlamamızı da sağlıyor. Örneğin BurpSuite ile doğrulama başarılı olduğunda bize bir doğrulandı paketi geldiğini düşünelim bu paketi doğrulama sayfasında tekrar yolladığımızda bypass edebiliriz. Ya da doğrulama sayfasında başka sayfalara ulaşmaya çalıştığımızda direk bypass etmiş olabiliriz. Örnek verelim:

 https://alperencoskun.com/account?authentication

Şeklinde bir doğrulama url i görüyoruz. Ve aslında var olan bir sayfaya örn: “https://alperencoskun.com/alperen/settings” yönlendirerek bypass etmemiz mümkün olabiliyor. 

 

Şimdi PortSwigger’dan birkaç örnek yapalım.

 

image

Burada bizden saldıracağımız bir kullanıcı bulmamız, listede var olan bir kullanıcıyı bulduktan sonra şifresini bulmamız istenmiş.

image

Yukarıdaki listeden rastgele bir kullanıcıyla giriş yapmayı deneyerek BurpSuite paketini yakalayacağız ve var olan bir kullanıcı bulmaya çalışacağız.

Access the lab a tıkladıktan sonra My account bölümünden giriş yapacağız.

Bu kısımda BurpSuite paket yakalamayı başlatıyoruz ve kullanıcı adı bölümüne ansible yazıyoruz ve şifreyi de 1234 olarak rastgele giriyorum. Burada BurpSuite nin Intruder özelliğini görmüş olacağız. Intruder   özelliği bizim çeşitli kaba kuvvet saldırıları yapmamıza izin verir ve denemelerde sayfaların döndürdüğü yanıt ,sayfa boyutu ve response kodu ile ilgili bilgi almamızı sağlar.

image

CTRL+I ya da sağ click >send to Intruder diyerek ulaşabiliriz.

image

Payloads bölümünden clear dedik ve sadece kullanıcı ismi kullandığımız parametreyi seçerek add butonuna tıkladık.

 

Şimdi aşağıdaki gibi PortSwigger’ın verdiği olası kullanıcılar listesini kopyalayıp  Payloads bölümüne Paste tıklayarak aşağıdaki gibi ekliyoruz.

image

Ve Start attack tıklayarak kaba kuvvet saldırımızı başlatmış oluyoruz.

image

Diğer sonuçlardan farklı boyutta yanıt vermiş buradan aix şeklinde bir kullanıcı olduğunu ve response koduna bakarak geçersiz bir şifre girdiğimizi de anlamış olduk. Şimdi aix kullanıcısının şifresine brute force(kaba kuvvet) saldırısı ile bulmaya çalışacağız.

image

Payloads bölümüne de şifreleri kopyaladıktan sonra Paste ile eklemiş olduk.

Şimdi şifre denemeye başlatmak için Sağ üst kısımda bulunan Start attack seçeneğine tıklıyoruz.

image

Şekildeki gibi aix kullanıcısının şifresini 777777 olarak öğrendik. Ve labı tamamladık.

image

Bir Lab daha çözelim:

image

Burada Carlos kullanıcısının kullanıcı adı şifresini biliyoruz fakat 2FA bilmediğimizden hesap sayfasına ulaşarak 2FA bypass etmemiz isteniyor. 

İlk aşamada kullanıcı adı şifre, wiener peter   şeklinde giriş yaptık. 

image

Ve labaratuvarda bulunan email server ile 2FA doğrulamasını yaptık.

 

image

 

Ve başarılı olduğumuzda bizi aşağıdaki url görmüş olduk

https:/xxxxxx.net/my-account

Bizde Carlos un kullanıcı adı ve şifre bildiğimiz için 2FA aşamasını url yönlendirerek geçmeye çalışacağız.

 

2FA sayfasında gelen url aşağıdaki gibidir:

image

login2 silip yerine my-account yazdığımızda Carlos hesabına giriş yapmış oluyoruz.

image

 

Peki Gerçek Web Sitelerinde Labaratuvarlardaki Gibi Çıkar Mı?

Evet mümkün, günümüzde bu hatalara sıklıkla karşılaşılmakta. Çözdüğümüz bu labaratuvarlardaki gibi bir zafiyet tespit edebiliriz. Ayrıca  sayfaya yönlendirerek 2FA atlatmak daha kolay olabiliniyo bu sadece doğrulanma sayfasının ardından açılan sayfayı değil farklı sayfalara da yönlendirmeye çalışarak bypass etmek mümkün.

 

 

Birkaç Örnek Authentication Raporları

https://hackerone.com/reports/418767

https://hackerone.com/reports/587910

https://hackerone.com/reports/649533